home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / u_man / cat1 / perfex.z / perfex
Encoding:
Text File  |  2002-10-03  |  32.0 KB  |  661 lines

  1.  
  2.  
  3.  
  4. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ppppeeeerrrrffffeeeexxxx - Command line interface to processor event counters
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ppppeeeerrrrffffeeeexxxx [----aaaa | ----eeee _e_v_e_n_t_0 [----eeee _e_v_e_n_t_1]] [----mmmmpppp |----ssss | ----pppp] [----pppppppp [_t_i_d]] [----xxxx] [----kkkk]
  13.      [----yyyy] [----tttt] [----TTTT] [----oooo _f_i_l_e] [----cccc _f_i_l_e] _c_o_m_m_a_n_d
  14.  
  15.  
  16. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  17.      The given _c_o_m_m_a_n_d is executed; after it is complete, _p_e_r_f_e_x prints the
  18.      values of various hardware performance counters.  The counts returned are
  19.      aggregated over all processes that are descendants of the target command,
  20.      as long as their parent process controls the child through wwwwaaaaiiiitttt (see
  21.      wwwwaaaaiiiitttt(2)).
  22.  
  23.      The R10000 event counters are different from R12000 event counters.  See
  24.      the rrrr11110000kkkk____ccccoooouuuunnnntttteeeerrrrssss(5) man page for differences.  For R10000 CPUs, the
  25.      integers _e_v_e_n_t_0 and _e_v_e_n_t_1 index the following table:
  26.           0 = Cycles
  27.           1 = Issued instructions
  28.           2 = Issued loads
  29.           3 = Issued stores
  30.           4 = Issued store conditionals
  31.           5 = Failed store conditionals
  32.           6 = Decoded branches.  (This changes meaning in 3.x
  33.                  versions of R10000.  It becomes resolved branches).
  34.           7 = Quadwords written back from secondary cache
  35.           8 = Correctable secondary cache data array ECC errors
  36.           9 = Primary (L1) instruction cache misses
  37.           10 = Secondary (L2) instruction cache misses
  38.           11 = Instruction misprediction from secondary cache way prediction table
  39.           12 = External interventions
  40.           13 = External invalidations
  41.           14 = Virtual coherency conditions.  (This changes meaning in 3.x
  42.                  versions of R10000.  It becomes ALU/FPU forward progress
  43.                  cycles.  On the R12000, this counter is always 0).
  44.           15 = Graduated instructions
  45.           16 = Cycles
  46.           17 = Graduated instructions
  47.           18 = Graduated loads
  48.           19 = Graduated stores
  49.           20 = Graduated store conditionals
  50.           21 = Graduated floating point instructions
  51.           22 = Quadwords written back from primary data cache
  52.           23 = TLB misses
  53.           24 = Mispredicted branches
  54.           25 = Primary (L1) data cache misses
  55.           26 = Secondary (L2) data cache misses
  56.           27 = Data misprediction from secondary cache way prediction table
  57.           28 = External intervention hits in secondary cache (L2)
  58.           29 = External invalidation hits in secondary cache
  59.           30 = Store/prefetch exclusive to clean block in secondary cache
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  71.  
  72.  
  73.  
  74.           31 = Store/prefetch exclusive to shared block in secondary cache
  75.  
  76.      For R12000 CPUs, the integers _e_v_e_n_t_0 and _e_v_e_n_t_1 index the following
  77.      table:
  78.           0 = Cycles
  79.           1 = Decoded instructions
  80.           2 = Decoded loads
  81.           3 = Decoded stores
  82.           4 = Miss handling table occupancy
  83.           5 = Failed store conditionals
  84.           6 = Resolved conditional branches
  85.           7 = Quadwords written back from secondary cache
  86.           8 = Correctable secondary cache data array ECC errors
  87.           9 = Primary (L1) instruction cache misses
  88.           10 = Secondary (L2) instruction cache misses
  89.           11 = Instruction misprediction from secondary cache way prediction table
  90.           12 = External interventions
  91.           13 = External invalidations
  92.           14 = ALU/FPU progress cycles.  (This counter in current versions of R12000
  93.                  is always 0).
  94.           15 = Graduated instructions
  95.           16 = Executed prefetch instructions
  96.           17 = Prefetch primary data cache misses
  97.           18 = Graduated loads
  98.           19 = Graduated stores
  99.           20 = Graduated store conditionals
  100.           21 = Graduated floating-point instructions
  101.           22 = Quadwords written back from primary data cache
  102.           23 = TLB misses
  103.           24 = Mispredicted branches
  104.           25 = Primary data cache misses
  105.           26 = Secondary data cache misses
  106.           27 = Data misprediction from secondary cache way prediction table
  107.           28 = State of intervention hits in secondary cache (L2)
  108.           29 = State of invalidation hits in secondary cache
  109.           30 = Store/prefetch exclusive to clean block in secondary cache
  110.           31 = Store/prefetch exclusive to shared block in secondary cache
  111.  
  112. BBBBAAAASSSSIIIICCCC OOOOPPPPTTTTIIIIOOOONNNNSSSS
  113.      ----eeee _e_v_e_n_t          Specify an event to be counted.
  114.  
  115.                        2, 1, or 0 event specifiers may be given, the default
  116.                        events being to count cycles.  Events may also be
  117.                        specified by setting one or both of the environment
  118.                        variables TTTT5555____EEEEVVVVEEEENNNNTTTT0000 and TTTT5555____EEEEVVVVEEEENNNNTTTT1111. Command line event
  119.                        specifiers, if present, override the environment
  120.                        variables. The order of events specified is not
  121.                        important.  The counts, together with an event
  122.                        description, are written to ssssttttddddeeeerrrrrrrr unless redirected
  123.                        with the ----oooo option. Two events that mmmmuuuusssstttt be counted on
  124.                        the same hardware counter (see rrrr11110000kkkk____ccccoooouuuunnnntttteeeerrrrssss(5)) will
  125.                        cause a conflicting counters error.
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  137.  
  138.  
  139.  
  140.      ----aaaa                Multiplexes over all events, projecting totals. Ignores
  141.                        event specifiers.
  142.  
  143.                        The option ----aaaa produces counts for all events by
  144.                        multiplexing over 16 events per counter. The OS does
  145.                        the switching round robin at clock interrupt
  146.                        boundaries. The resulting counts are normalized by
  147.                        multiplying by 16 to give an estimate of the values
  148.                        they would have had for exclusive counting. Due to the
  149.                        equal-time nature of the multiplexing, events present
  150.                        in large enough numbers to contribute significantly to
  151.                        the execution time will be fairly represented. Events
  152.                        concentrated in a few short regions (for instance,
  153.                        instruction cache misses) may not be projected very
  154.                        accurately.
  155.  
  156.  
  157.      ----mmmmpppp               Report per-thread counts for multiprocessing programs
  158.                        as well as (default) totals.
  159.  
  160.                        By default, ppppeeeerrrrffffeeeexxxx aggregates the counts of all the
  161.                        child threads and reports this number for each selected
  162.                        event. The ----mmmmpppp option causes the counters for each
  163.                        thread to be collected at thread exit time and printed
  164.                        out; the counts aggregated across all threads are
  165.                        printed next.  The per-thread counts are labeled by
  166.                        process ID (pid).
  167.  
  168.  
  169.  
  170.      ----pppppppp               Report per-pthread counts for multiprocessing programs.
  171.  
  172.                        ppppeeeerrrrffffeeeexxxx ----pppppppp ttttiiiidddd  displays the counts of the pthread with
  173.                        thread id ttttiiiidddd.  ppppeeeerrrrffffeeeexxxx ----mmmmpppp ----pppppppp displays the counts of
  174.                        all pthreads associated with the process.  If pthread 0
  175.                        is chosen, all of the pthread counts will be displayed.
  176.                        The ----pppppppp option causes the counters for the thread to be
  177.                        collected at thread exit time and printed out; The
  178.                        per-pthread counts are labeled by thread ID (tid).
  179.  
  180.  
  181.      ----oooo _f_i_l_e           Redirects ppppeeeerrrrffffeeeexxxx output to the specified file.
  182.  
  183.                        In the ----mmmmpppp case, the file name includes the pid of the
  184.                        sssspppprrrroooocccc child thread.
  185.  
  186.  
  187.      ----ssss                Starts (or stops) counting when a SSSSIIIIGGGGUUUUSSSSRRRR1111 (or SSSSIIIIGGGGUUUUSSSSRRRR2222)
  188.                        signal is received by a ppppeeeerrrrffffeeeexxxx process.
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  203.  
  204.  
  205.  
  206.      ----pppp _p_e_r_i_o_d         Profiles (samples) the counters with the given period.
  207.  
  208.                        This option causes ppppeeeerrrrffffeeeexxxx to wait until it (i.e., the
  209.                        ppppeeeerrrrffffeeeexxxx process) receives a SSSSIIIIGGGGUUUUSSSSRRRR1111 before it starts
  210.                        counting (for the child process, the target). It will
  211.                        stop counting if it receives a SSSSIIIIGGGGUUUUSSSSRRRR2222. Repeated cycles
  212.                        of this will aggregate counts. If no SSSSIIIIGGGGUUUUSSSSRRRR2222 is
  213.                        received (the usual case), the counting will continue
  214.                        until the child exits.  Note that counting for
  215.                        descendants of the child will not be affected, meaning
  216.                        counting for mp programs cannot be controlled with this
  217.                        option.
  218.  
  219.  
  220.      ----xxxx                Counts at exception level (as well as the default user
  221.                        level).
  222.  
  223.                        Exception level includes time spent on behalf of the
  224.                        user during, for example, TLB refill exceptions.  Other
  225.                        counting modes (kernel, supervisor) are available
  226.                        through the OS iiiiooooccccttttllll interface (see rrrr11110000kkkk____ccccoooouuuunnnntttteeeerrrrssss(5) ).
  227.  
  228.  
  229.      ----kkkk                Counts at kernel level (as well as user and exception
  230.                        level, if set), program superuser privileges.
  231.  
  232.  
  233. EEEEXXXXAAAAMMMMPPPPLLLLEEEE
  234.      To collect instruction and data secondary cache miss counts on a program
  235.      normally executed by
  236.  
  237.         % bar < bar.in > bar.out
  238.  
  239.       would be accomplished by
  240.  
  241.         % perfex -e 26 -e 10 bar < bar.in > bar.out .
  242.  
  243.  
  244.  
  245. CCCCOOOOSSSSTTTT EEEESSSSTTTTIIIIMMMMAAAATTTTEEEE OOOOPPPPTTTTIIIIOOOONNNNSSSS
  246.      ----yyyy   Report statistics and ranges of estimated times per event.
  247.  
  248.           Without the ----yyyy option, ppppeeeerrrrffffeeeexxxx reports the counts recorded by the
  249.           event counters for the events requested. Since they are simply raw
  250.           counts, it is difficult to know by inspection which events are
  251.           responsible for significant portions of the job's run time. The ----yyyy
  252.           option associates time cost with some of the event counts.
  253.  
  254.           The reported times are approximate.  Due to the superscalar nature
  255.           of the R10000 and R12000 CPUs, and their ability to hide latency,
  256.           stating a precise cost for a single occurrence of many of the events
  257.           is not possible. Cache misses, for example, can be overlapped with
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  269.  
  270.  
  271.  
  272.           other operations, so there is a wide range of times possible for any
  273.           cache miss.
  274.  
  275.           To account for the fact that the cost of many events cannot be known
  276.           precisely, ppppeeeerrrrffffeeeexxxx ----yyyy reports a range of time costs for each event.
  277.           "Maximum," "minimum," and "typical" time costs are reported. Each is
  278.           obtained by consulting an internal table that holds the maximum,
  279.           minimum, and typical costs for each event, and multiplying this cost
  280.           by the count for the event. Event costs are usually measured in
  281.           terms of machine cycles, and so the cost of an event generally
  282.           depends on the clock speed of the processor, which is also reported
  283.           in the output.
  284.  
  285.           The maximum value contained in the table corresponds to the worst
  286.           case cost of a single occurrence of the event. Sometimes this can be
  287.           a very pessimistic estimate. For example, the maximum cost for
  288.           graduated floating-point instructions assumes that all such
  289.           instructions are double precision reciprocal square roots, since
  290.           that is the most costly floating-point instruction.
  291.  
  292.           Due to the latency-hiding capabilities of the CPUs, the minimum cost
  293.           of virtually any event could be zero, since most events can be
  294.           overlapped with other operations. To avoid simply reporting minimum
  295.           costs of 0, which would be of no practical use, the minimum time
  296.           reported by ppppeeeerrrrffffeeeexxxx ----yyyy corresponds to the "best case" cost of a
  297.           single occurrence of the event. The best case cost is obtained by
  298.           running the maximum number of simultaneous occurrences of that event
  299.           and averaging the cost. For example, two floating-point instructions
  300.           can complete per cycle, so the best case cost on the R10000 is 0.5
  301.           cycles per floating-point instruction.
  302.  
  303.           The typical cost falls somewhere between minimum and maximum and is
  304.           meant to correspond to the cost one would expect to see in average
  305.           programs. For example, to measure the typical cost of a cache miss,
  306.           stride-1 accesses to an array too big to fit in cache were timed,
  307.           and the number of cache misses generated was counted. The same
  308.           number of stride-1 accesses to an in-cache array were then timed.
  309.           The difference in times corresponds to the cost of the cache misses,
  310.           and this was used to calculate the average cost of a cache miss.
  311.           This typical cost is lower than the worst case in which each cache
  312.           miss cannot be overlapped, and it is higher than the best case, in
  313.           which several independent, and hence, overlapping, cache misses are
  314.           generated.  (Note that on Origin systems, this methodology yields
  315.           the time for secondary cache misses to local memory only.)
  316.           Naturally, these typical costs are somewhat arbitrary.  If they do
  317.           not seem right for the application being measuring by ppppeeeerrrrffffeeeexxxx, they
  318.           can be replaced by user-supplied values. See the ----cccc option below.
  319.  
  320.           ppppeeeerrrrffffeeeexxxx ----yyyy prints the event counts and associated cost estimates
  321.           sorted from most costly to least costly. While resembling a
  322.           profiling output, it is not a true profile. The event costs reported
  323.           are only estimates. Furthermore, since events do overlap with each
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  335.  
  336.  
  337.  
  338.           other, the sum of the estimated times will usually exceed the
  339.           program's run time.  This output should only be used to identify
  340.           which events are responsible for significant portions of the
  341.           program's run time and to get a rough idea of what those costs might
  342.           be.
  343.  
  344.           With this in mind, the built-in cost table does not make an attempt
  345.           to provide detailed costs for all events. Some events provide
  346.           summary or redundant information. These events are assigned minimum
  347.           and typical costs of 0, so that they sort to the bottom of the
  348.           output.  The maximum costs are set to 1 cycle, so that you can get
  349.           an indication of the time corresponding to these events.  Issued
  350.           instructions and graduated instructions are examples of such events.
  351.           In addition to these summary or redundant events, detailed cost
  352.           information has not been provided for a few other events, such as
  353.           external interventions and external invalidations, since it is
  354.           difficult to assign costs to these asynchronous events. The built-in
  355.           cost values may be overridden by user-supplied values using the ----cccc
  356.           option.
  357.  
  358.           In addition the event counts and cost estimates, ppppeeeerrrrffffeeeexxxx ----yyyy also
  359.           reports a number of statistics derived from the typical costs. The
  360.           meaning of many of the statistics is self-evident (for example,
  361.           graduated instructions/cycle). The following are statistics whose
  362.           definitions require more explanation.  These are available with both
  363.           R10000 and R12000 CPUs.
  364.  
  365.  
  366.      Data mispredict/Data secondary cache hits
  367.  
  368.           This is the ratio of the counts for data misprediction from
  369.           secondary cache way prediction table and secondary data cache
  370.           misses.
  371.  
  372.  
  373.      Instruction mispredict/Instruction secondary cache hits
  374.  
  375.           This is the ratio of the counts for instruction misprediction from
  376.           secondary cache way prediction table and secondary instruction cache
  377.           misses.
  378.  
  379.  
  380.      Primary cache line reuse
  381.  
  382.           The is the number of times, on average, that a primary data cache
  383.           line is used after it has been moved into the cache. It is
  384.           calculated as graduated loads plus graduated stores minus primary
  385.           data cache misses, all divided by primary data cache misses.
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  401.  
  402.  
  403.  
  404.      Secondary Cache Line Reuse
  405.  
  406.           The is the number of times, on average, that a secondary data cache
  407.           line is used after it has been moved into the cache. It is
  408.           calculated as primary data cache misses minus secondary data cache
  409.           misses, all divided by secondary data cache misses.
  410.  
  411.      Primary Data Cache Hit Rate
  412.  
  413.           This is the fraction of data accesses that are satisfied from a
  414.           cache line already resident in the primary data cache. It is
  415.           calculated as 1.0 - (primary data cache misses divided by the sum of
  416.           graduated loads and graduated stores).
  417.  
  418.      Secondary Data Cache Hit Rate
  419.  
  420.           This is the fraction of data accesses that are satisfied from a
  421.           cache line already resident in the secondary data cache. It is
  422.           calculated as 1.0 - (secondary data cache misses divided by primary
  423.           data cache misses).
  424.  
  425.      Time accessing memory/Total time
  426.  
  427.           This is the sum of the typical costs of graduated loads, graduated
  428.           stores, primary data cache misses, secondary data cache misses, and
  429.           TLB misses, divided by the total program run time. The total program
  430.           run time is calculated by multiplying cycles by the time per cycle
  431.           (the inverse of the processor's clock speed).
  432.  
  433.      Primary-to-secondary bandwidth used (MB/s, average per process)
  434.  
  435.           This is the amount of data moved between the primary and secondary
  436.           data caches, divided by the total program run time. The amount of
  437.           data moved is calculated as the sum of the number of primary data
  438.           cache misses multiplied by the primary cache line size and the
  439.           number of quadwords written back from primary data cache multiplied
  440.           by the size of a quadword (16 bytes).  For multiprocess programs,
  441.           the resulting figure is a per-process average, since the counts
  442.           measured by ppppeeeerrrrffffeeeexxxx are aggregates of the counts for all the threads.
  443.           You must multiply by the number of threads to get the total program
  444.           bandwidth.
  445.  
  446.      Memory bandwidth used (MB/s, average per process)
  447.  
  448.           This is the amount of data moved between the secondary data cache
  449.           and main memory, divided by the total program run time. The amount
  450.           of data moved is calculated as the sum of the number of secondary
  451.           data cache misses multiplied by the secondary cache line size and
  452.           the number of quadwords written back from secondary data cache
  453.           multiplied by the size of a quadword (16 bytes).  For multiprocess
  454.           programs, the resulting figure is a per-process average, since the
  455.           counts measured by ppppeeeerrrrffffeeeexxxx are aggregates of the counts for all the
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  467.  
  468.  
  469.  
  470.           threads. You must multiply by the number of threads to get the total
  471.           program bandwidth.
  472.  
  473.      MFLOPS (MB/s, average per process)
  474.  
  475.           This is the ratio of the graduated floating-point instructions and
  476.           the total program run time. Note that while a multiply-add carries
  477.           out two floating-point operations, it only counts as one
  478.           instruction, so this statistic may underestimate the number of
  479.           floating-point operations per second. For multiprocess programs, the
  480.           resulting figure is a per-process average, since the counts measured
  481.           by ppppeeeerrrrffffeeeexxxx are aggregates of the counts for all the threads. You must
  482.           multiply by the number of threads to get the total program rate.
  483.  
  484.      The following statistics are computed only on R12000 CPUs:
  485.  
  486.      Cache misses in flight per cycle (average)
  487.           This is the count of event 4 (Miss Handling Table (MHT) population)
  488.           divided by cycles.  It can range between 0 and 5 and represents the
  489.           average number of cache misses of any kind that are outstanding per
  490.           cycle.
  491.  
  492.      Prefetch miss rate
  493.           This is the count of event 17 (prefetch primary data cache misses)
  494.           divided by the count of event 16 (executed prefetch instructions).
  495.           A high prefetch miss rate (about 1) is desirable, since prefetch
  496.           hits are wasting instruction bandwidth.
  497.  
  498.      A statistic is only printed if counts for the events which define it have
  499.      been gathered.
  500.  
  501.  
  502.      ----cccc _f_i_l_e
  503.           Load a cost table from _f_i_l_e (requires that ----yyyy is specified).
  504.  
  505.           This option allows you to override the internal event costs used by
  506.           the ----yyyy option. _f_i_l_e contains the list of event costs that are to be
  507.           overridden. This _f_i_l_e must be in the same format as the output
  508.           produced by the ----cccc option. Costs may be specied in units of "clks"
  509.           (machine cycles) or "nsec" (nanoseconds). You can override all or
  510.           only a subset of the default costs.
  511.  
  512.           You can also use the file ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss to override event costs.
  513.           If this file exists, any costs listed in it will override those
  514.           built into ppppeeeerrrrffffeeeexxxx. Costs supplied with the ----cccc option will override
  515.           those provided by the ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss file.
  516.  
  517.  
  518.      ----tttt   Print the cost table used for ppppeeeerrrrffffeeeexxxx ----yyyy cost estimates to ssssttttddddoooouuuutttt.
  519.  
  520.           These internal costs can be overridden by specifying different
  521.           values in the file ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss or by using the ----cccc _f_i_l_e option.
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  533.  
  534.  
  535.  
  536.           Both _f_i_l_e and ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss must use the format as provided by
  537.           the ----tttt option. It is recommended that you capture this output to a
  538.           file and edit it to create a suitable file for ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss or
  539.           the ----cccc option. You do not have to specify costs for every event,
  540.           however.  Lines corresponding to events with values you do not wish
  541.           to override may simply be deleted from the file.
  542.  
  543.  
  544. MMMMIIIIXXXXEEEEDDDD CCCCPPPPUUUU OOOOPPPPTTTTIIIIOOOONNNN
  545.      The following is an option for systems with both R10000 and R12000 CPUs.
  546.  
  547.  
  548.      ----TTTT   Allows experienced users to use ppppeeeerrrrffffeeeexxxx on a system of mixed CPUs.
  549.  
  550.      Although ppppeeeerrrrffffeeeexxxx cannot verify it, the specification of this option means
  551.      that you have used either ddddppppllllaaaacccceeee(1) or some other means to ensure that
  552.      the program is using either all R10000 CPUs or all R12000 CPUs.
  553.  
  554.      When used with this option, the ----yyyy option will not produce cost estimates
  555.      due to the fact that the cost estimation cannot know which type of CPU is
  556.      actually targeted.  Nothing prevents you, however, from loading a cost
  557.      table with ----cccc.  This cost table could be directly dumped from a pure-
  558.      R10000 or pure-R12000 system, depending on which CPU flavor the program
  559.      is running.
  560.  
  561.  
  562. CCCCHHHHAAAANNNNGGGGEEEE IIIINNNN BBBBEEEEHHHHAAAAVVVVIIIIOOOORRRR OOOOFFFF DDDDEEEEFFFFAAAAUUUULLLLTTTT EEEEVVVVEEEENNNNTTTTSSSS
  563.      Because of limitations of ABI/API compliance with Irix version 6.5/R10000
  564.      in the operating system counter interface, it is only possible to count
  565.      cycles and graduated instructions on counter 0.  Accordingly, when the
  566.      R12000 user specifies an event in the range 0-15 to ppppeeeerrrrffffeeeexxxx, either
  567.      through a ----eeee argument or environment variables, cycles cannot be counted
  568.      simultaneously with that event as they can on the R10000.  (ppppeeeerrrrffffeeeexxxx only
  569.      multiplexes events for the ----aaaa option, never for individually specified
  570.      events).  In these cases ppppeeeerrrrffffeeeexxxx will count event 16 (executed prefetch
  571.      instructions) as the second event.
  572.  
  573.      For similar reasons, ppppeeeerrrrffffeeeexxxx no longer remaps events 0, 15, 16, and 17 to
  574.      fit them on two (R10000) counters, since that would induce a different
  575.      behavior for identical arguments on R10000 and R12000 systems. It would
  576.      create problems when mixed-CPU systems are supported.  To be specific,
  577.      prior to 6.5.3 a user could specify:
  578.      %%%% ppppeeeerrrrffffeeeexxxx ----eeee 0000 ----eeee 11115555 aaaa....oooouuuutttt
  579.  
  580.      This would execute as if the user had specified:
  581.      %%%% ppppeeeerrrrffffeeeexxxx ----eeee 0000 ----eeee 11117777 aaaa....oooouuuutttt
  582.  
  583.      or
  584.      %%%% ppppeeeerrrrffffeeeexxxx ----eeee 11115555 ----eeee 11116666 aaaa....oooouuuutttt
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PPPPEEEERRRRFFFFEEEEXXXX((((1111))))                                                            PPPPEEEERRRRFFFFEEEEXXXX((((1111))))
  599.  
  600.  
  601.  
  602.      After Irix version 6.5.3, this argument combination is an error, and the
  603.      user must decide which of the equivalent (for R10000 only) forms to use.
  604.      It is the lack of equivalence for R12000 that makes this regression
  605.      necessary.
  606.  
  607. FFFFIIIILLLLEEEESSSS
  608.      ////eeeettttcccc////ppppeeeerrrrffffeeeexxxx....ccccoooossssttttssss
  609.  
  610.  
  611. DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNCCCCIIIIEEEESSSS
  612.      ppppeeeerrrrffffeeeexxxx only works on an R10000 or R12000 system.  Programs running on
  613.      mixed R1000 and R12000 CPUs are not supported, although specifying the ----TTTT
  614.      option will permit you to verify that only CPUs of the same type are
  615.      being used.  Usually, ppppeeeerrrrffffeeeexxxx prints an informative message and fails on
  616.      mixed CPU systems.
  617.  
  618.      For the ----mmmmpppp option, only binaries linked-shared are currently supported;
  619.      this is due to a dependency on lllliiiibbbbppppeeeerrrrffffeeeexxxx....ssssoooo.  The options ----ssss and ----mmmmpppp are
  620.      currently mutually exclusive.
  621.  
  622.  
  623. LLLLIIIIMMMMIIIITTTTAAAATTTTIIIIOOOONNNNSSSS
  624.      The signal control interface (----ssss) can control only the immediate target
  625.      process, not any of its descendants.  This makes it unusable with
  626.      multiprocess targets in their parallel regions.
  627.  
  628.  
  629. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  630.      rrrr11110000kkkk____ccccoooouuuunnnntttteeeerrrrssss(5), lllliiiibbbbppppeeeerrrrffffeeeexxxx(3C), ttttiiiimmmmeeee(1), ttttiiiimmmmeeeexxxx(1)
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.